template< typename T >
inline void GnStream::GnStreamLoadBinary(T& obj)
{
	GnStreamLoadBinary(obj, GnT::GnStreamTraits<T>::isTrivialCopy);
}

template< typename T >
inline void GnStream::GnStreamLoadBinary(T& obj, GnT::_FalseType)
{
	obj.LoadBinary(*this);
}

template< typename T >
inline void GnStream::GnStreamLoadBinary(T& obj, GnT::_TrueType)
{
	mpFile->ReadBinary(&obj, sizeof(T));
}

inline void GnStream::GnStreamLoadBinary(void* pBuffer, gsize size)
{
	mpFile->ReadBinary(pBuffer, size);
}

template< typename T >
inline void GnStream::GnStreamSaveBinary( T& obj )
{
	GnStreamSaveBinary( obj, GnT::GnStreamTraits<T>::isTrivialCopy );
}

inline void GnStream::GnStreamSaveBinary(const void * pBuffer, gsize size)
{

}

template< typename T >
inline void GnStream::GnStreamSaveBinary( T& obj, GnT::_FalseType )
{

}

template< typename T >
inline void GnStream::GnStreamSaveBinary( T& obj, GnT::_TrueType )
{

}